﻿using System.Linq;
using System.Windows;
using System.Windows.Controls;
using kursovaya.Data.Context;
using kursovaya.Data.Entity;

namespace kursovaya.Windows
{
    public partial class EditInvWindow : Window
    {
        private Inventorye Inventorye;

        public EditInvWindow()
        {
            InitializeComponent();
        }

        private void SaveShangesButton_OnClick(object sender, RoutedEventArgs e)
        {
            string name = NameTextBox.Text.Trim();
            string amountText = AmountTextBox.Text.Trim();
            string description = DescriptionTextBox.Text.Trim();

            if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(amountText) || string.IsNullOrEmpty(description))
            {
                MessageBox.Show("Поля не должны быть пустыми!",
                    "Ошибка",
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);
                return;
            }

            if (name.Length > 50)
            {
                MessageBox.Show("Название не должно превышать 50 символов!",
                    "Ошибка",
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);
                return;
            }

            if (!int.TryParse(amountText, out int amount) || amount <= 0 || amount > 150)
            {
                MessageBox.Show("Введите корректное число от 1 до 150 в поле 'Количество'!",
                    "Ошибка",
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);
                return;
            }

            if (description.Length > 200)
            {
                MessageBox.Show("Описание не должно превышать 200 символов!",
                    "Ошибка",
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);
                return;
            }

            if (Inventorye != null)
            {
                Inventorye.name = NameTextBox.Text.Trim();
                Inventorye.amount = AmountTextBox.Text;
                Inventorye.description = DescriptionTextBox.Text;


                using (var context = new DbContext())
                {
                    context.Entry(Inventorye).State = System.Data.Entity.EntityState.Modified;
                    context.SaveChanges();
                }

                MessageBox.Show("Изменения успешно сохранены.",
                    "Редактирование",
                    MessageBoxButton.OK,
                    MessageBoxImage.Information);
            }
            else
            {
                MessageBox.Show("Сначала выполните поиск предмета по ID.", "Ошибка", MessageBoxButton.OK,
                    MessageBoxImage.Error);
            }
        }


        private void SearchButton_OnClick(object sender, RoutedEventArgs e)
        {
            NameTextBox.Text = "";
            AmountTextBox.Text = "";
            DescriptionTextBox.Text = "";

            int id;
            if (int.TryParse(IdTextBox.Text.Trim(), out id))
            {
                using (var context = new DbContext())
                {
                    Inventorye = context.Inventoryes.FirstOrDefault(s => s.id == id);
                }

                if (Inventorye != null)
                {
                    NameTextBox.Text = Inventorye.name;
                    AmountTextBox.Text = Inventorye.amount;
                    DescriptionTextBox.Text = Inventorye.description;
                }
                else
                {
                    MessageBox.Show("Предмет с указанным ID не найден.", "Поиск", MessageBoxButton.OK,
                        MessageBoxImage.Information);
                }
            }
            else
            {
                MessageBox.Show("Введите корректный ID предмета.", "Ошибка", MessageBoxButton.OK,
                    MessageBoxImage.Error);
            }
        }
    }
}